package cate.game.play.buff.h;

import cate.common.table.d.GDFight;
import cate.game.play.buff.BuffHandler;
import cate.game.play.config.PlayCfgArgs;
import cate.game.play.fighter.Fighter;
import cate.game.play.proce.action.ctx.ActionCtx;
import easy.java.struct.ref.DoubleRef;

/**
 * 携带该状态的单位受到攻击时，减免并反弹30%攻击伤害(无法减免斩杀伤害和神器伤害，反弹伤害不超过自身攻击力的2.7倍)，持续2回合
 */
public class 激荡BH extends BuffHandler {

	private double 减免系数;

	private double 最大系数;

	//减免系数=3000&最大系数=27000
	@Override
	public void parse(String code) {
		PlayCfgArgs args = new PlayCfgArgs(code);
		减免系数 = args.getWDouble("减免系数", 0d);
		最大系数 = args.getWDouble("最大系数", 0d);
	}

	@Override
	public void parseExt(String code) {
		PlayCfgArgs args = new PlayCfgArgs(code);
		减免系数 += args.getWDouble("减免系数", 0d);
		最大系数 += args.getWDouble("最大系数", 0d);
	}

	@Override
	public void adjustSkillDamage(ActionCtx action, Fighter actor, int reason, DoubleRef doubleRef) {
		if (!GDFight.Fighter.isAreaFighter(actor.type)) {
			return;
		}
		double v = Math.min(doubleRef.v * 减免系数, buff.owner.attr.attTotal() * 最大系数);
		if (v > 0) {
			doubleRef.v -= v;
			actor.attr.buffHurt(action, buff.owner, v);
		}
	}
}
